#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""

获取对象信息

type()函数
"""

print(type(123))
print(type('str'))
print(type(None))
print(type(abs))

# type()函数返回的是什么类型呢？它返回对应的Class类型。如果我们要在if语句中判断，就需要比较两个变量的type类型是否相同
print(type(123) == type(456))
print(type(123) == int)
print(type('abc') == type(123))

# 判断基本数据类型可以直接写int，str等，但如果要判断一个对象是否是函数怎么办？可以使用types模块中定义的常量
import types

print(type(abs) == types.BuiltinFunctionType)
print(type(abs) == types.FunctionType)
print(type(lambda x: x) == types.LambdaType)
print(type((x for x in range(10))) == types.GeneratorType)

# 判断一个变量是否是某个类型可以用isinstance()函数
print(isinstance('a', str))
print(isinstance(123, int))
print(isinstance([1, 2, 3], (list, tuple)))
print(isinstance((1, 2, 3), (list, tuple)))

# 要获得一个对象的所有属性和方法，可以使用dir()
print(dir('ABC'))
print(len('ABC'))
print('ABC'.__len__())



